<?php

namespace LowCode\Traits;

trait BaseEvents
{
    /**
     * 元素单击事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onClick(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onClick", $event, $isJSExpression);
    }

    /**
     * 元素双击事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onDblclick(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onDblclick",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针按下事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMousedown(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMousedown",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针抬起事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMouseup(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMouseup",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针移动事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMousemove(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMousemove",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针移进事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMouseenter(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMouseenter",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针移出事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMouseout(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMouseout",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针离开时事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMouseleave(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMouseleave",$event,$isJSExpression);
    }

    /**
     * 元素鼠标指针位于元素上方时事件
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onMouseover(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onMouseover",$event,$isJSExpression);
    }

    /**
     * 元素鼠标右键
     * @param string $event 函数字符串
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onContextmenu(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onContextmenu",$event,$isJSExpression);
    }


}
